package com.legendshop.openportal.sdk.model.response.v4;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 给开放平台使用的商品详情结果
 */
@Data
@ApiModel(value = "商品基本详情返回结果")
public class ProductDetailV4Response implements Serializable {

    private static final long serialVersionUID = 8409692281714130123L;

    /**
     * 商品ID
     */
    @ApiModelProperty("商品ID")
    private Long prodId;

    /**
     * 商品名称
     */
    @ApiModelProperty("商品名称")
    private String name;

    /**
     * 简要描述,卖点等
     */
    @ApiModelProperty("简要描述,卖点等")
    private String brief;

    /**
     * 商品价格
     */
    @ApiModelProperty("商品价格")
    private BigDecimal price;

    /**
     * 市场价格
     */
    @ApiModelProperty("市场价格")
    private BigDecimal marketprice;

    /**
     * 商品主图
     */
    @ApiModelProperty("商品主图")
    private String pic;

    /**
     * 商品视频
     */
    @ApiModelProperty("商品视频")
    private String video;


    /**
     * 商品状态, 1为正常
     */
    @ApiModelProperty("商品状态, 1为正常")
    private Integer status;

    /**
     * 品牌ID
     */
    @ApiModelProperty("品牌ID")
    private Long brandId;

    /**
     * 品牌DTO
     */
    @ApiModelProperty("品牌DTO")
    private DisplayBrandDTO brand;

    /**
     * 商品详情内容
     */
    @ApiModelProperty("商品详情内容")
    private String content;

    /**
     * 商品详情图片集合
     */
    @ApiModelProperty("商品详情图片集合")
    private String contentImages;

    /**
     * 商品动态参数
     */
    @ApiModelProperty("商品动态参数")
    private List<ProdParamDto> parameters;

    /**
     * 商品sku集合
     */
    @ApiModelProperty("商品sku集合")
    private List<ProductSkuDto> skuDtoList;

    /**
     * 商品图片列表
     */
    @ApiModelProperty("商品图片列表")
    private List<String> images;

    @ApiModelProperty(value = "商品配送方式")
    private ProdDeliveryTypeDTO deliveryTypeDTO;

    @ApiModelProperty(value = "起售数量")
    private Integer startSaleAmount;

    /**
     * 规格样式
     */
    @ApiModelProperty(value = "规格样式")
    private String specificationStyle;

    @ApiModelProperty(value = "其他信息，在商品不可购买的情况下给出真实的描述")
    private String others;

    @ApiModelProperty("商品拓展信息")
    private String jsonInfo;

    /**
     * 供应商商品拓展信息
     */
    private String prodExtendInfo;

    /**
     * 商品来源
     * SupplyChannelEnum
     */
    private String prodSource;


    /**
     * 一级类目ID
     */
    @ApiModelProperty("一级类目ID")
    private Long firstCatId;

    /**
     * 一级分类名称
     */
    @ApiModelProperty("一级分类名称")
    private String firstCatName;

    /**
     * 二级类目ID
     */
    @ApiModelProperty("二级类目ID")
    private Long secondCatId;

    /**
     * 二级分类名称
     */
    @ApiModelProperty("二级分类名称")
    private String secondCatName;

    /**
     * 三级类目ID
     */
    @ApiModelProperty("三级类目ID")
    private Long thirdCatId;

    /**
     * 三级分类名称
     */
    @ApiModelProperty("三级分类名称")
    private String thirdCatName;

    /**
     * 虚拟商品类型，参见 VisualProductTypeEnum
     */
    @ApiModelProperty("虚拟商品类型, CP:卡密;  DA:直充")
    private String visualProdType;

    /**
     * GoodsTypeEnum 商品类型 normal; 普通； virtual：虚拟商品(无须配送);  overseas：海淘
     **/
    @ApiModelProperty("商品类型, normal: 普通;  virtual: 虚拟商品(无须配送);  overseas：海淘")
    private String goodsType;


    /**
     * 商品参数
     */
    @Data
    @ApiModel(value = "商品参数")
    public static class ProdParamDto implements Serializable {

        private static final long serialVersionUID = 9127844181627450794L;

        @ApiModelProperty(value = "属性id")
        private Long propId;//属性id

        @ApiModelProperty(value = "参数id")
        private Long paramId;

        @ApiModelProperty(value = "参数名")
        private String paramName;

        @ApiModelProperty(value = "参数值Id")
        private Long paramValueId; //参数值Id

        @ApiModelProperty(value = "参数值")
        private String paramValueName;//参数值

        @ApiModelProperty(value = "分组名称")
        private String groupName;//分组名称

        @ApiModelProperty(value = "参数值列表")
        private List<String> paramValueNameList;

    }


    /**
     * 品牌展示在商品详情页的信息
     */
    @Data
    @ApiModel(value = "品牌")
    public static class DisplayBrandDTO implements Serializable {

        /**
         * 品牌名字
         */
        @ApiModelProperty("品牌名字")
        private String name;

        /**
         * PC品牌logo
         */
        @ApiModelProperty("品牌logo")
        private String brandPic;

        /**
         * 品牌口号
         */
        @ApiModelProperty("品牌口号")
        private String slogan;
    }


    /**
     * 商品配送方式 DTO
     *
     * @author
     */
    @Data
    @ApiModel(value = "商品配送方式")
    public static class ProdDeliveryTypeDTO implements Serializable {
        /**
         * 商家配送
         */
        @ApiModelProperty(value = "商家配送")
        private Boolean merchantDelivery;

        /**
         * 到店自提
         */
        @ApiModelProperty(value = "到店自提")
        private Boolean sinceMention;

        /**
         * 无需配送
         */
        @ApiModelProperty(value = "无需配送")
        private Boolean notRequired;
    }

    /**
     * 商品ＳＫＵ　实体模型
     *
     * @author Tony
     */
    @Data
    @ApiModel(value = "商品规格")
    public static class ProductSkuDto implements Serializable {

        private static final long serialVersionUID = 6830009574780972733L;

        /**
         * sku id
         */
        @ApiModelProperty(value = "商品规格ID")
        private Long skuId;

        /**
         * 商品ID
         */
        @ApiModelProperty(value = "商品ID")
        private Long prodId;


        /**
         * sku 名称
         */
        @ApiModelProperty(value = "商品名称")
        private String name;

        /**
         * 价格
         */
        @ApiModelProperty(value = "商品价格")
        private BigDecimal price;


        /**
         * sku的销售属性组合字符串（颜色，大小，等等）,格式是p1:v1;p2:v2
         */
        @ApiModelProperty(value = "sku的销售属性组合字符串（颜色，大小，等等）,格式是p1:v1;p2:v2")
        private String properties;

        /**
         * sku的销售属性组合字符串（颜色，大小，等等）,格式是p1:v1;p2:v2
         */
        @ApiModelProperty(value = "sku的销售属性组合字符串（颜色，大小，等等）,格式是p1:v1;p2:v2")
        private String cnProperties;

        @ApiModelProperty(value = "商品图片")
        private String pic;

        /**
         * sku状态。 1:正常     0:删除
         */
        @ApiModelProperty(value = "sku状态。 1:正常     0:删除")
        private Integer status;

        /**
         * sku数量
         */
        @ApiModelProperty(value = "sku数量")
        private Integer stocks;

        /**
         * 对应属性值ID
         */
        @ApiModelProperty(value = "对应属性值ID")
        private String propValueIds;

        /**
         * 图片路径
         */
        @ApiModelProperty(value = "图片路径")
        private List<String> images;

        /**
         * 是否是主SKU
         */
        @ApiModelProperty(value = "是否是主SKU")
        private Boolean isMainSku;

        /**
         * 重量
         */
        @ApiModelProperty(value = "重量")
        private Double weight;

        /**
         * 体积
         */
        @ApiModelProperty(value = "体积")
        private Double volume;

        /**
         * 利润率
         */
        @ApiModelProperty(value = "利润率")
        private BigDecimal profitRate;

        /**
         * 最高建议零售价
         */
        @ApiModelProperty(value = "最高建议零售价")
        private String maxSuggestPrice;



    }


}
